#ifndef __INTROALGORITHM_H
#define __INTROALGORITHM_H

#include "IntroHeader.h"
#include "BinaryTree.h"
#include "ConvexHullPoint.h"
#include "Graph.h"
using namespace std;

void InsertionSort(vector<int> &array);
void SelectionSort(vector<int> &array);
void BubbleSort(vector<int> &array);
void MergeSort(vector<int> &array);
template<class T>
void QuickSort(vector<T> &array);
template<>
void QuickSort<int>(vector<int> &array);
template<>
void QuickSort<ConvexHullPoint>(vector<ConvexHullPoint> &points);
int  BinarySearch(const vector<int> &array, int ele);
void PreorderTraversal(BinaryTree *root);
void InorderTraversal(BinaryTree *root);
void PostorderTraversal(BinaryTree *root);
int  BinaryTreeHeight(BinaryTree *root);
void ShellSort(vector<int> &array);
void DFS(Graph *graph);
void BFS(Graph *graph);

#endif
